C/C++

推荐列表 站点导航

当前位置:首页 > 脚本编程 > C/C++ >

C++_VC文件目录常见操作实例汇总,一般来说,在VC里文件操作有

来源:网络整理  作者:  发布时间:2020-12-22 12:04
VC文件目录常见操作实例汇总,一般来说,在VC里文件操作有很多,本文在这里收录了一些常见的函数,分享给大家供大...

while (::FindNextFile(searchhandle, &finddata) != 0)

void SearchFile(_tslist& list, LPCTSTR filepath, LPCTSTR filefilterlist = _T(".*" ), bool isordered = true)

    {
}

    FindClose(hFind);
     }
    }
    CFileFind fFind;
    if ( (searchhandle = ::FindFirstFile(buffer, &finddata)) != INVALID_HANDLE_VALUE )

int64    dwDirSize = 0;
{

    BOOL rValue = FALSE;

返回文件名的链表。

    HANDLE hFind = FindFirstFile(strPath, &wfd);

5. 计算文件夹的大小

CString strFilePath;

            CString strTempPath = finder.GetFilePath();
  _tslist filename = SearchFile(s,s1);

WIN32_FIND_DATA finddata;

4. 文件大小:

          else
}

返回值: 文件夹的大小,单位为byte。

    DWORD fileSize;

DWORD GetFileSize(CString filepath)
    {
  #include <string>
    return dwDirSize;

复制代码 代码如下:

  #include <cassert>
        fileSize = fileInfo.nFileSizeLow;
}

HANDLE searchhandle = INVALID_HANDLE_VALUE;

//参数: strPath: 目录的完整路径,注意不要以'https://www.xp.cn/'结尾

BOOL  FileExist(CString strFileName)

测试代码如下:

isordered  是否对文件名排序 

可以使用。由于返回值为int64,int64表示的磁盘空间是相当大的,也没有溢出的可能。

        rValue = TRUE;
                 filenamelist.push_back(finddata.cFileName);

size_t length= _tcslen(filepath);

//返回值: 如果为目录,返回真,否则返回假

    HANDLE hFind;

#if _MSC_VER > 1310 

}

            _tstring filterstring = filefilterlist;
    if(hFind != INVALID_HANDLE_VALUE)

_tslist filenamelist; // initial length is 100

 }

            }

返回值: 文件大小。单位为Byte。

            if (!finder.IsDirectory())
         }
    CFileFind finder;

TCHAR buffer[MAX_PATH];

    WIN32_FIND_DATA fileInfo;

{

if (isordered)  //如果要求排序,对链表进行排序
    BOOL bFind = finder.FindFile(strFilePath);

*/

    ::FindClose( searchhandle );

filefilterlist 文件扩展名列表,可以是多种类型的组合,比如说.txt;.xls;.doc

返回值: 如果存在,返回真,否则返回假。

由于函数返回的是list,因此有笔不菲的拷贝开销。个人也不确定RVO(返回值)是否会被执行,所以如果list很大很大的话,这确实是很糟糕的。解决方法是把list作为引用参数传进去。这样就省了一次拷贝的开销。

        bFind = finder.FindNextFile();
                _tstring::size_type exist;

由于该函数涉及到递归调用,因此如果是超大大的文件夹,或者文件夹下的子文件夹特别多,

                exist = filterstring.find(extname);
               continue;
{

*/

{

*/

BOOL FolderExist(CString strPath)
    filename = filepath;
    return filenamelist;

1. 判断一个目录是否存在

if (buffer[length-1] != _T('//'))

复制代码 代码如下:

参数:文件或目录的完整名字(带路径),可以是文件名,也可以是目录名

    while (bFind)

2. 判断文件或目录是否存在

}

#include "windows.h"

    finder.Close();

filenamelist.push_back(finddata.cFileName);
   
    if ((hFind!=INVALID_HANDLE_VALUE) &&

filepath  目录的完整路径,不带//

        {
         (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))

则很有可能造成堆栈溢出。本人测试过系统目录D和E,均没有发生溢出。因此在一般情况下

_tcscpy_s(buffer, filepath); //_tcscpy_s is a micro for strcpy_s and strwcpy_s 

        }
  LPCTSTR s1 = _T(".txt; .xls");

设置目录的常见属性

      }
            {

复制代码 代码如下:

   {

    SECURITY_ATTRIBUTES attrib;
    }
    strFilePath += "//*.*";
    WIN32_FIND_DATA wfd;

_tslist  SearchFile(LPCTSTR filepath, LPCTSTR filefilterlist = _T(".*" ), bool isordered = true)

  LPCTSTR s = _T("C://temp");

参数:文件夹的完整路径。该函数不使用与文件

            //get file filter list string, a example, file filter may be ".txt;.xls;.doc"
  #include <tchar.h>
    }

3. 创建一个目录

                if (exist != _tstring::npos)  //判断文件的扩展名是否在扩展名列表里
         {
 /*

           {

  #include <Windows.h>
            else

#else

  #include <set>

BOOL CreateFolder(CString strPath)

复制代码 代码如下:

                dwDirSize += GetDirSize(strTempPath);
            }

copy( filename.begin(),
  #include <list>
                 _tstring extname = filename.substr(index+1);  //取得文件的扩展名
            _tstring filename(finddata.cFileName);

            filename.end(),

复制代码 代码如下:

   /*

    {
    hFind = FindFirstFile(filename,&fileInfo);

参数: 文件名字, 注意,如果给的是目录(文件夹),该函数返回值不会递归计算目录下所有文件大小。所以该函数只适           用于文件大小的统计。

  typedef std::basic_string<TCHAR> _tstring;  //宽字符串

_tcscat_s(buffer,_T("//*")); // 向字符串结尾添加/*, 用来查找所有文件
     {

  typedef std::list<_tstring> _tslist; //字符串链表
          );

#endif

    return fileSize ;
    FindClose(hFind);
            else

复制代码 代码如下:

       {
            {
              }

assert(filepath != NULL);  

{

复制代码 代码如下:

6. 列出某目录下的所有文件(不递归列出)

    return fFind.FindFile(strFileName);
            if (index == _tstring::npos) // 文件没有扩展名,跳过
    return ::CreateDirectory(strPath, &attrib);

        if (!finder.IsDots())
    strFilePath += strDirPath;

_tcscpy(buffer,filepath);  //

以上代码均通过visual studio 2008编译,测试运行。

                dwDirSize += finder.GetLength();
            _tstring::size_type index = filename.find_last_of(_T('.'));
        filenamelist.sort();  //list的排序采用的一般是merge sort
            ostream_iterator<_tstring, _tstring::value_type >(wcout, _T("/n") )
            }

int64 GetFolderSize(CString strDirPath)

复制代码 代码如下:

          if (  !_tcsicmp(filefilterlist, _T(".*")))   // 将所有文件输出到链表

    return rValue;

    {

    CString filename;

if ( !(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )   // 为文件            
    }
 {

/* 1310 for Microsoft Visual C++ .NET 2003. 1310 represents /version 13 and a 1.0 point          release. The Visual C++ 2005 compiler version is 1400, the number.

相关热词: C++ 实例

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/cjj/7115.shtml

最新文章
只需要在调用Ctrl+B编译后 只需要在调用Ctrl+B编译后

时间:2021-01-13

OpenGL超级宝典visual studio OpenGL超级宝典visual studio

时间:2021-01-04

Directx11 教程(2) 基本的wi Directx11 教程(2) 基本的wi

时间:2021-01-04

LeetCode11ContainerWithMostWate LeetCode11ContainerWithMostWate

时间:2021-01-04

C语言简单IT之家速成 C语言简单IT之家速成

时间:2020-12-27

三分钟了解Activity工作流 三分钟了解Activity工作流

时间:2020-12-27

编译器是如何实现32位整型 编译器是如何实现32位整型

时间:2020-12-27

C++中lower_bound函数和upper C++中lower_bound函数和upper

时间:2020-12-27

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

C++_VC文件目录常见操作实例汇总,一般来说,在VC里文件操作有

2020-12-22 编辑:

while (::FindNextFile(searchhandle, &finddata) != 0)

void SearchFile(_tslist& list, LPCTSTR filepath, LPCTSTR filefilterlist = _T(".*" ), bool isordered = true)

    {
}

    FindClose(hFind);
     }
    }
    CFileFind fFind;
    if ( (searchhandle = ::FindFirstFile(buffer, &finddata)) != INVALID_HANDLE_VALUE )

int64    dwDirSize = 0;
{

    BOOL rValue = FALSE;

返回文件名的链表。

    HANDLE hFind = FindFirstFile(strPath, &wfd);

5. 计算文件夹的大小

CString strFilePath;

            CString strTempPath = finder.GetFilePath();
  _tslist filename = SearchFile(s,s1);

WIN32_FIND_DATA finddata;

4. 文件大小:

          else
}

返回值: 文件夹的大小,单位为byte。

    DWORD fileSize;

DWORD GetFileSize(CString filepath)
    {
  #include <string>
    return dwDirSize;

复制代码 代码如下:

  #include <cassert>
        fileSize = fileInfo.nFileSizeLow;
}

HANDLE searchhandle = INVALID_HANDLE_VALUE;

//参数: strPath: 目录的完整路径,注意不要以'https://www.xp.cn/'结尾

BOOL  FileExist(CString strFileName)

测试代码如下:

isordered  是否对文件名排序 

可以使用。由于返回值为int64,int64表示的磁盘空间是相当大的,也没有溢出的可能。

        rValue = TRUE;
                 filenamelist.push_back(finddata.cFileName);

size_t length= _tcslen(filepath);

//返回值: 如果为目录,返回真,否则返回假

    HANDLE hFind;

#if _MSC_VER > 1310 

}

            _tstring filterstring = filefilterlist;
    if(hFind != INVALID_HANDLE_VALUE)

_tslist filenamelist; // initial length is 100

 }

            }

返回值: 文件大小。单位为Byte。

            if (!finder.IsDirectory())
         }
    CFileFind finder;

TCHAR buffer[MAX_PATH];

    WIN32_FIND_DATA fileInfo;

{

if (isordered)  //如果要求排序,对链表进行排序
    BOOL bFind = finder.FindFile(strFilePath);

*/

    ::FindClose( searchhandle );

filefilterlist 文件扩展名列表,可以是多种类型的组合,比如说.txt;.xls;.doc

返回值: 如果存在,返回真,否则返回假。

由于函数返回的是list,因此有笔不菲的拷贝开销。个人也不确定RVO(返回值)是否会被执行,所以如果list很大很大的话,这确实是很糟糕的。解决方法是把list作为引用参数传进去。这样就省了一次拷贝的开销。

        bFind = finder.FindNextFile();
                _tstring::size_type exist;

由于该函数涉及到递归调用,因此如果是超大大的文件夹,或者文件夹下的子文件夹特别多,

                exist = filterstring.find(extname);
               continue;
{

*/

{

*/

BOOL FolderExist(CString strPath)
    filename = filepath;
    return filenamelist;

1. 判断一个目录是否存在

if (buffer[length-1] != _T('//'))

复制代码 代码如下:

参数:文件或目录的完整名字(带路径),可以是文件名,也可以是目录名

    while (bFind)

2. 判断文件或目录是否存在

}

#include "windows.h"

    finder.Close();

filenamelist.push_back(finddata.cFileName);
   
    if ((hFind!=INVALID_HANDLE_VALUE) &&

filepath  目录的完整路径,不带//

        {
         (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))

则很有可能造成堆栈溢出。本人测试过系统目录D和E,均没有发生溢出。因此在一般情况下

_tcscpy_s(buffer, filepath); //_tcscpy_s is a micro for strcpy_s and strwcpy_s 

        }
  LPCTSTR s1 = _T(".txt; .xls");

设置目录的常见属性

      }
            {

复制代码 代码如下:

   {

    SECURITY_ATTRIBUTES attrib;
    }
    strFilePath += "//*.*";
    WIN32_FIND_DATA wfd;

_tslist  SearchFile(LPCTSTR filepath, LPCTSTR filefilterlist = _T(".*" ), bool isordered = true)

  LPCTSTR s = _T("C://temp");

参数:文件夹的完整路径。该函数不使用与文件

            //get file filter list string, a example, file filter may be ".txt;.xls;.doc"
  #include <tchar.h>
    }

3. 创建一个目录

                if (exist != _tstring::npos)  //判断文件的扩展名是否在扩展名列表里
         {
 /*

           {

  #include <Windows.h>
            else

#else

  #include <set>

BOOL CreateFolder(CString strPath)

复制代码 代码如下:

                dwDirSize += GetDirSize(strTempPath);
            }

copy( filename.begin(),
  #include <list>
                 _tstring extname = filename.substr(index+1);  //取得文件的扩展名
            _tstring filename(finddata.cFileName);

            filename.end(),

复制代码 代码如下:

   /*

    {
    hFind = FindFirstFile(filename,&fileInfo);

参数: 文件名字, 注意,如果给的是目录(文件夹),该函数返回值不会递归计算目录下所有文件大小。所以该函数只适           用于文件大小的统计。

  typedef std::basic_string<TCHAR> _tstring;  //宽字符串

_tcscat_s(buffer,_T("//*")); // 向字符串结尾添加/*, 用来查找所有文件
     {

  typedef std::list<_tstring> _tslist; //字符串链表
          );

#endif

    return fileSize ;
    FindClose(hFind);
            else

复制代码 代码如下:

       {
            {
              }

assert(filepath != NULL);  

{

复制代码 代码如下:

6. 列出某目录下的所有文件(不递归列出)

    return fFind.FindFile(strFileName);
            if (index == _tstring::npos) // 文件没有扩展名,跳过
    return ::CreateDirectory(strPath, &attrib);

        if (!finder.IsDots())
    strFilePath += strDirPath;

_tcscpy(buffer,filepath);  //

以上代码均通过visual studio 2008编译,测试运行。

                dwDirSize += finder.GetLength();
            _tstring::size_type index = filename.find_last_of(_T('.'));
        filenamelist.sort();  //list的排序采用的一般是merge sort
            ostream_iterator<_tstring, _tstring::value_type >(wcout, _T("/n") )
            }

int64 GetFolderSize(CString strDirPath)

复制代码 代码如下:

          if (  !_tcsicmp(filefilterlist, _T(".*")))   // 将所有文件输出到链表

    return rValue;

    {

    CString filename;

if ( !(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )   // 为文件            
    }
 {

/* 1310 for Microsoft Visual C++ .NET 2003. 1310 represents /version 13 and a 1.0 point          release. The Visual C++ 2005 compiler version is 1400, the number.

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/cjj/7115.shtml

相关文章

风云图片

推荐阅读

返回C/C++频道首页